Some computer systems have a firmware basic input/output system (“BIOS”) containing basic routines which are accessed to boot the computer as well as to initialize and interface hardware with operating system software. Occasionally, the BIOS may need to be updated to reflect changes in the hardware configuration of the computer system or to add new features. To facilitate BIOS updates, the BIOS of many modem computer systems is stored as groups of memory “blocks” representing the BIOS code. These blocks are typically stored in a type of re-programmable memory device, called “flash memory.” In large-scale computing or server platforms, the BIOS may be stored on multiple flash memory chips, also called “flash” memory devices or parts. In computer systems utilizing flash memory devices to store the BIOS, a software update utility may be used to update the contents of the flash memory devices by erasing and re-programming each flash memory device.
Traditionally, flash memory is updated on a block-by-block basis by sequentially erasing and/or programming each block. Furthermore, each block of flash memory is updated regardless of whether the block actually needs updating. Thus, in updating flash memory, blocks remaining unchanged from a previous version would still be updated by the conventional update process.
In computer systems utilizing multiple flash memory devices, updating these devices can be a time-consuming process as the contents of only one flash memory device is updated at a time. Thus, the contents of each flash memory device are updated sequentially. The length of the update process is further increased in that each block of flash memory is updated regardless of whether the block actually needs updating. The wait time currently required for completing the update of multiple flash memory devices increases the potential for interruption of the update process due to an error such as a power failure. As the updating of the flash memory is a very critical operation, interruptions during the update process may make a computer system unbootable.
It is with respect to these considerations and others that the present invention has been made.